3D-engine v4.0   -   I've got some BALLS v1.02
(C) Sebastian Aaltonen 1999     (SHATTERSTORM)
----------------------------------------------

Tm dokumentti ksittelee kentn tekoa.


--TAUSTAA-----------------------------------------------------------------------

I've got some BALLS:n kentt on muodostettu 3d-malleist, jotka on
taas muodostettu polygoneista. Kenttien tekemiseen tarvitset siis
ohjelman, joka pystyy tekemn 3-ulotteisia polygonimalleja.

BALLS:n 3d-engine kytt sen omaa tiedostomuodoa (.3DO).
Pelin mukana tulleella kntjll (MAKEMAP.EXE) voit knt
3D-mallinnusohjelmallasi tekemt kentt enginen ymmrtmn muotoon.

Tll hetkell valmiina on ainoastaan kntj varmaankin yleisimmlle
3D-mallintajalle, eli 3D Studiolle. Kntj on suunniteltu 3DSMAX
versioita 1.0/2.0/2.5/3.0 varten, mutta voi toimia muillakin. Kntj
kytt 3DSMAX:n ASE-asciitallennusmuotoa.

Jos omistat jonkun muun 3D-mallintajan, joka tallentaa omaan
ascii-muotoonsa, olisitko ystvllinen ja lhettisit muutaman
mallitiedoston, ett voisin tehd kntjn mys kyseiselle ohjelmalle.

Jos 3d-mallintajasi pystyy tallentamaan yleisesti kytetyss 
3DS-muodossa, niin voit mys tehd kentti, joudut vain lhettmn
ne minulle ensin kntmist varten.


-- 1. Tst se kaikki alkaa ----------------------------------------------------

Nm ohjeet kentn teosta on suunniteltu 3D Studio MAX:ia varten. Jos tahdot
tehd kentti muilla ohjelmilla, joudut odottamaan uusien kntjien tuloa,
tai lhettmn tuotoksesi aluksi minulle 3DS-muodossa:

HUOM!!!!!!!
3d-studio MAX ei osaa ladata RLE-pakattuja BMP-kuvia, joten sinun tytyy
muuntaa ne tavallisiksi BMP-kuviksi. Thn tarkoitukseen yksi parhaista
ohjelmista on Paint Shop Pro. Voit ladata kuvat yksi kerrallaan ja
tallentaa ne normaaleiksi BMP-tiedostoiksi, tai kytt batch-conversion
tykalua. Jos et muuta kuvia, niin 3d-studio valittaa "FILE NOT
FOUND", kun avaat kuvan, eik nyt kuvaa. Kytnnss voit kytt
3d-studiota RLE-pakatuillakin kuvilla, ne eivt vaan sitten ny
kun teet kentt. Peli osaa kytt kumpiakin tiedostomuotoja.

Oletan ett osaat jo perusteet 3d Studio MAX:sta, enk opeta niit tss
osiossa.

Kentnteossa kannattaa kytt mahdollisimman yksinkertaisia objekteja ja
polygonimr kannattaa valmiissa kentss olla maksimissaan noin 1000-2000,
riippuen tietenkin mys kentn koosta. Jos kenttsi on selvsti suurempi,
kuin normaalit, niin voit kytt mys enemmn polygoneja.

Kentn ja yksittisten objektejen polygoni/vertexi -mrt net helpoiten
menusta FILE -> SUMMARY INFO.
Polygonimrn net "Mesh totals - Faces" kohdasta.

HUOM!
Yhdess objektissa ei saa olla enemp kuin 2000 polygonia tai vertexi.

Helpoiten pset alkuun katsomalla "map.max" esimerkkikentt...


-- 2. Materiaalit --------------------------------------------------------------

Kun olet tehnyt muutamia objekteja kenttsi, haluat varmaat jo nhd milt
kenttsi nyttisi textuureiden kanssa.

Menusta TOOLS -> MATERIAL EDITOR pset materiaali-editoriin, jossa kaikki
materiaalit tehdn.

Uuden materiaalin teko:
1. Valitse tyhja materiaali (valmiina).
2. Muuta "Ambient" tysin mustaksi  (basic parameters kohdasta)
3. Muuta "Diffuse" tysin valkoiseksi
4. Clikkaa alhaalta MAPS, ja sielt valitse diffuse (klikkaa siit: NONE)
5. Valitse "bitmap" (sivumenussa: New/All) -> ja paina OK
6. Clikkaa "Bitmap parameters - Bitmap"
7. Mene BALLS:n hakemistoon ja valitse sielt sopiva tekstuuri (BMP).
   ("View..." napilla voit katsoa tekstuureja) -> ja sitten paina OK.
8. Laita "show map in viewport" plle. (se kuutionappi ylrivistss)
9. "Assign":aa materiaali kenttsi objektiin (kolmas nappi rivistss)

Erikoishommat materiaaleille
----------------------------
Hohto:          
"BASIC PARAMETERS - AMBIENT"
Jos vaihdat ambient-vrin pois mustasta, niin peliss objekti loistaa
kyseist vri, vaikka se ei olisikaan valossa.

Objektin vri:          
"BASIC PARAMETERS - DIFFUSE"
Jos vaihdat diffuse-vrin pois valkoisesta, niin peliss objekti vrjtn
kyseisell vrill. Tys-mustiin objekteihin eivt valot vaikuta ollenkaan.

2-puoleisuus:    
"BASIC PARAMETERS - 2-SIDED"
Voit tehd 2-puoleisia objekteja kun valitset tmn.Kaksipuoleisen objektin
kaikki polygonit piirretn kummaltakin puolelta, mutta trmysrutiinit
eivt viel toimi kuin yhdelt puolelta. 

Alpha Blending: (eli lpinkyvyys)
"EXTENDED PARAMETERS - OPACITY - TYPE"
FILTER-valinta tarkoittaa, ett objekti ei ole lpinkyv.
ADDITIVE-valinnalla saat lpinkyvyyden, joka lis vri (kirkastaa).
SUBTRACTIVE-valinnalla saat lpinkyvyyden, joka tummentaa vri.


-- 3. Valot --------------------------------------------------------------------

Ilman valoja peliss ei ne mitn, joten joudut kyttmn niit.

Perusvalo:
1. Create - Lights - Omni
2. Sd vri kohdalleen color-napista.
3. Sd valon koko "shadow parameters - size" -kohdasta.
   Size 10000 tarkoittaa pvaloa, joka ylt kaikkialle, eik heikkene.     
4. Sd valon glow:n koko "shadow parameters - mapbias" -kohdasta
   4.0 = normaali koko, 0 = ei glowwia, 20.0 = 5Xkoko yms... 
  (UUTTA: tm on muuttunut 0.9 versiosta)    
5. Aseta valosi sopivaan paikkaan.


Liikkuva valo:  (lue erikoisobjektit kappale)
"MOV=XXYY","SPD=?"
Valo liikkuu tietty reitti pitkin. Reitti tehdn POINTTEJEN avulla.
Kaksi ensimmist lukua (XX) tarkoittavat reitin numeroa, ja loput
kaksi (YY) tarkoittavat ensimmist reittipistett, johon valo lhtee.
SPD - mrite antaa valon kulkunopeuden.
esim. 
MOV=0301_SPD=5   - Valo liikkuu reitti 3 pitkin ja sen nopeus on 5.


-- 4. Erikoisobjektit -----------------------------------------------------------

BALLSissa on muutama erikois-objektityyppi, jota joudut kyttmn.
Kaikki objektejen erikoistyypit kirjoitetaan objektin NIMEEN,
ja erotetaan toisistaan _ -merkill

Pyriv objekti:
"ROX=?","ROY=?","ROZ=?"
Pyrivn objektin eri pyrimisakselit ja niden pyrimisnopeudet.
esim. ROX=5   - objekti pyrii x-akselin suunnassa nopeudella 5.
      ROZ=-3  - objekti pyrii z-akselin suunnassa vastapivn nopeudella 3.

Vauhtia antava objekti (trampoliinit ja vauhtinuolet yms...):
"ADS=XXYYZZ"   (nopea vauhti - soveltuu kimmottaviin tasoihin)
"ADs=XXYYZZ"   (10 x hitaampi vauhti - soveltuu vauhtinuoliin)
Antaa pallolle vauhtia tiettyyn suuntaan. 
XX on nopeus.
YY on kulma (vaakatasossa), niin ett: 00= < 20= \/ 40= > 60= /\  (arvot 0-79)  
ZZ on kulma (pystytasossa), niin ett: 00=ALAS 40=VAAKA 80=YLS   (arvot 0-80)  
esim.
ADS=100080 - Objekti antaa pallolle suoraan ylspin vauhtia nopeudella 10.		

Lpimentv objekti:
"NOCOL"
Tllisten objektejen lpi pallo menee, eivtk ne vaikuta sen kyttytymiseen
milln tavalla.

Special objekti: (l kyt NOCOL:n kanssa. Vain 1 per objekti)
"SP?"
Objektin joku liskyky, kuten:
SP2  -  Portti, joka muuttaa pallon normaaliksi.
SP3  -  Portti, joka muuttaa pallon punaiseksi.
SP4  -  Portti, joka muuttaa pallon keltaiseksi.
SP5  -  Portti, joka muuttaa pallon siniseksi.
SP6  -  Portti, joka muuttaa pallon vihreksi.

Liikkuva objekti:
"MOV=XXYY","SPD=?"
Objekti liikkuu tietty reitti pitkin. Reitti tehdn POINTTEJEN avulla.
Kaksi ensimmist lukua (XX) tarkoittavat reitin numeroa, ja loput
kaksi (YY) tarkoittavat ensimmist reittipistett, johon objekti lhtee.
SPD - mrite antaa objekti kulkunopeuden.
esim. 
MOV=0301_SPD=5   - Objekti liikkuu reitti 3 pitkin ja sen nopeus on 5.


-- 4. Pisteet ------------------------------------------------------------------

Kaikki erikoistavarat, pallon aloituspaikka ja reittipisteet merkitn
POINT-objektityypill. (CREATE - HELPERS - POINT)

Pisteiden tyyppi riippuu niiden nimest:
START     - Pallon aloituspaikka
DIA       - Kerttvt timantit
ROU=XXYY  - Reittipiste:  XX=reitin numero, YY=monesko reitin piste tm on.
RWT=?     - Objektejen odotusaika tss reittipisteess (60 = 1 sekunti)
RSP=?     - Objektejen nopeuskerroin tss pisteess (100 = 100%, yms....)
            oletuksena 100%, jollei mritetty.
RXA=?     - Objektin kulmat reittipisteess (? = kulma asteina)
RYA=?       oletuksena 0 astetta, ellei mritetty.
RZA=?       (Niden avulla saat objektin kntymn reitin mukaan)

Reitti pisteet:  (lue erikoisobjektit kappale)
"ROU=XXYY"
Tm piste toimii reittipisteen muille objekteille. XX on reitin numero,
ja YY kertoo monesko reitin piste tm on. Objektit kulkevat reitti pitkin
niin, ett ne menevt reittipisteest aina seuraavaan. Viimeisen reittipisteen
jlkeen ne lhtevt taas reitin ensimmiseen pisteeseen.
esim.
ROU=0402_RWT=120   - Reitin 4 toinen reittipiste. Pisteess kappale pyshtyy
                     kahdeksi sekunniksi.
ROU=0101_RYA=90    - Reitin 1 ensimminen reittipiste. Kappaleen y-kulma on tss
		         kohdassa reitti 90 astetta. 

Liikkuva piste:  (lue erikoisobjektit kappale)
"MOV=XXYY","SPD=?"
Piste liikkuu tietty reitti pitkin. Reitti tehdn POINTTEJEN avulla.
Kaksi ensimmist lukua (XX) tarkoittavat reitin numeroa, ja loput
kaksi (YY) tarkoittavat ensimmist reittipistett, johon piste lhtee.
SPD - mrite antaa pistee kulkunopeuden.
esim. 
MOV=0301_SPD=5       - Piste liikkuu reitti 3 pitkin ja sen nopeus on 5.
DIA_MOV=0501_SPD=2   - Piste (joka on timantti) liikkuu reitti 5 pitkin
                       ja sen nopeus on 2.


-- 5. Taustakuva ---------------------------------------------------------------

Pelin kenttien taustalla on taustakuva. Se on BMP-kuva, jota "vieritetn"
taustalla. 

Nin teet taustakuvan:
1. Tee aluksi perus materiaali, johon lataat halutun BMP:n diffuseksi.
2. Pvalikosta clikkaa RENDERING - ENVIROINMENT
3. Clikkaa "enviroinment map" laatikkoa. (NONE)
4. Aseta BROWSE FROM "Mtrl editor"-asetukseen, ja valitse
   taustakuvan BMP valikosta. (siin on vihre laatikko edess)
5. Valitse INSTANCE seuraavasta kysymyksest. (ja sitten OK)


-- 6. Optimointia --------------------------------------------------------------

Mainitsin ensimmisess osiossa 1000-2000 polygonin maksimi suosituksesta.
Tietenkin on voinut kyd niin, ett kenttsi on ylittnyt tmn rajan
roimasti. Ja vaikka ei olisikaan, on optimointi aina paikallaan.

"File - Summary info":n avulla voit tarkistaa kenttsi yhteis polygonimrn.
Polygonimrn net "Mesh totals - Faces" kohdasta.

Kyt jokaiseen objektiin "Modify - Optimize":ia.
Voit st optimizen tehoa lismll face/edge -thresh arvoa.
Aina kun suurempi optimointi sit vhemmn yksityiskohtia j jljelle,
joten kannattaa kokeilla useita eri vaihtoehtoja parhaan suhteen lytmiseksi.

Optimizen jlkeen objektin textuurikoordinaatit menevt sekaisin, joten kyt
jokaiseen optimoituun objektiin optimoinnin jlkeen mys
"Modify - UVW-mapping":ia palauttaaksesi textuurikoordinaatit kohdalleen.
"Box-mapping" on paras vaihtoehto useimmissa tapauksissa.

Kannattaa kytt objekteihin "EDIT MESH":i, ja poistaa sen avulla facet,
jotka eivt tule peliss nkyviin. Kuten peliradan pohjafacet.

HUOM! l tee pallolle rataa litistmll BOX:eja millin ohuisiksi, vaan
jos haluat ohuita tasoja, niin poista "EDIT MESH":ll BOX:in ala- ja sivufacet
ja jt vain plliface.  (muista kytt 2sided texturointia)

HUOM! Pallo pomppaa vain facejen toiselta puolelta ja menee toisen
puolen lpi, vaikka facet olisivatkin 2sided texturoituja. Jos tahdot
vaihtaa facejen "toimivaa" puolta, niin vaihto onnistuu NORMAL-tykalun
avulla, kohdasta "FLIP NORMALS".
 

-- 7. Exportataan kentt ASE:ksi -----------------------------------------------

BALLS:n kntj(MAKEMAP.EXE) osaa toistaiseksi lukea vain ASE-tietostomuodossa
olevia 3D-malleja. Eli sinun on exportattava 3D-mallisi ASE-muotoon.

(Muista aina mys tallentaa normaalisti MAX-muotoon, koska 3D-Studio ei osaa
ladata takaisin ASEja...)


Nin se ky:
1. File - Export
2. Valitse ASE-muoto. (Ascii Scene Export)
3. Mene BALLS:in MAPS-hakemistoon
4. Kirjoita kenttsi nimi ja paina OK.
5. Ascii-export valikko tulee esiin, merkkaa (vain) seuraavat:
  - Mesh Definition
  - Materials
  - Mapping Coordinates
  - Geometric
  - Lights 
  - Helpers
  - Use keys
6. Paina OK:ta kun olet valmis.


-- 8. MAKEMAP.EXE ---------------------------------------------------------------

Avaa DOS-prompti ja mene BALLS:n MAPS-hakemistoon.
Varmista, ett tekemsi kentt on hakemistossa (kentt.ase).
MAKEMAP:n avulla voit nyt knt kenttsi sellaiseen muotoon,
ett 3d-engine osaa kytt sit.

Eli kirjoita (DOS):
MAKEMAP kentt

esim:
MAKEMAP cybercity

Ruudulle pitisi tulla kaikennkist roskaa jonkun aikaa. 
Jos kntj valittaa, ett jossain kenttsi objektissa on liikaa
vertexeja, tvertexej tai faceja, niin avaa kenttsi taas 3d-studiolla,
ja kyt objektiin optimizea.

Nyt voit kokeilla kenttsi SINGLE-MAP -vaihtoehdolla alkumenusta, 
mutta lue sen jlkeen eteenpin...
(jos kentt ei ny valikossa, varmista, ett tallensit sen varmasti
MAPS-hakemistoon)


-- 9. SE EI TOIMI!!!!! ---------------------------------------------------------

On mahdollista, ett peli kaatuu, kun yritt kynnist kenttsi.
Vikoja voi olla useita. Tss yleisimpi, joita olen huomannut
kavereitteni kentiss.

1. Kentn textuurejen tiedostonimet saavat olla korkeintaan
   8 kirjainta pitki.

2. Textuurit pit olla BMP-muodossa, niiden pit olla laatikon muotoisia
   ja niiden leveys ja korkeus tytyy olla 2-potensseja eli 
   esim. 128x128, 64x64, 32x32, 16x16.... Textuurejen maksimikoko on 256x256...
   (nm rajoitukset johtuvat joidenkin 3d-korttejen rajoittuneisuudesta,
    mutta koska pelin tytyy toimia mahdollisimman monella 3d-kortilla on
    nit rajoituksia noudatettava)

3. Jos textuurihakemistosi(=BALLS) on sellaisessa paikassa, ett sen
   hakemistopolussa on pitki tiedostonimi, voi tulla ongelmia johtuen
   DOS-kntjist.

4. Jokin objektisi voi sislt yli 2000 polygonia tai vertexi -> kyt
   optimizea.

5. Kentss pit olla START-paikka ja ainakin yksi timantti (DIA).


... Jos et pse alkuun, niin katsele "map.max" esimerkkikentt, ja
kokeile knt se toimivaksi kentksi...


--------------------------------------------------------------------------------
Mailaa jos et ymmrtnyt jotain, joku asia oli virheellisesti selitetty,
tai jos et saanut kenttsi toimimaan.


Yhteystiedot:
-------------
MAIL: seppo.j.aaltonen@kolumbus.fi        

SHATTERSTORM WWW-SIVUT: 
www.kolumbus.fi/seppo.j.aaltonen/shatter


